
//2874.有序三元组中的最大值II
class Solution {
public:
    long long maximumTripletValue(vector<int>& nums) {
        int n=nums.size();
        int prev_max=nums[0];

        vector<int> div(n);
        for(int i=1;i<n;i++)   //先预处理,枚举每一个j,维护左边最大值使得prev_max-nums[i]可以最大化
        {
            div[i]=prev_max-nums[i];
            if(nums[i]>prev_max) prev_max=nums[i];
        }

        long long the_div=div[1];
        long long ret=0;
        for(int i=2;i<n;i++)   //以及得到了nums[i]-nums[j]的情况,只需要在枚举nums[k]即可
        {
            ret=max(ret,the_div*nums[i]);
            if(div[i]>the_div) the_div=div[i];
        }
        return ret;
    }
};
